//package com.home_school_platform.interceptor;
//
//import com.auth0.jwt.exceptions.AlgorithmMismatchException;
//import com.auth0.jwt.exceptions.SignatureVerificationException;
//import com.auth0.jwt.exceptions.TokenExpiredException;
//import com.fasterxml.jackson.databind.ObjectMapper;
//
//import com.home_school_platform.util.JwtUtils;
//import org.springframework.web.servlet.HandlerInterceptor;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.util.HashMap;
//import java.util.Map;
//
//
//public class LoginInterceptor implements HandlerInterceptor {
//
//
//
//    /**
//     * 目标方法执行之前
//     * */
//    @Override
//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//
//        String token = request.getHeader("Authorization");
//
//        Map<String,Object> map = new HashMap<>();
//
//        //通过判断token是否存在来区分PC端和小程序端，再使用不同的认证方法。
//        if (token != null && token.length() != 0){
//            try {
//                JwtUtils.verify(token);
//                return true;
//            } catch (TokenExpiredException e) {
//                map.put("state", false);
//                map.put("msg", "Token已经过期!!!");
//            } catch (SignatureVerificationException e){
//                map.put("state", false);
//                map.put("msg", "签名错误!!!");
//            } catch (AlgorithmMismatchException e){
//                map.put("state", false);
//                map.put("msg", "加密算法不匹配!!!");
//            } catch (Exception e) {
//                e.printStackTrace();
//                map.put("state", false);
//                map.put("msg", "无效token~~");
//            }
//            String json = new ObjectMapper().writeValueAsString(map);
//            response.setContentType("application/json;charset=UTF-8");
//            response.getWriter().println(json);
//            return false;
//        }else if (request.getParameter("openId") != null){
//            return true;
//        }else {
//            return false;
//        }
//
//    }
//
//
//
//}
